www.gusucode.com > 溷沌分析工具箱 - OpenTSTOOL1.11 > 混沌分析工具箱 - OpenTSTOOL1.11\tstoolbox\@signal\firstzero.m
function [xpos, u] = firstzero(s) %tstoolbox/@signal/firstzero % Syntax: % * [xpos, unit] = firstzero(s) % % Give information about first zero of scalar signal s, using linear % interpolation. % % Copyright 1997-2001 DPI Goettingen, License http://www.physik3.gwdg.de/tstool/gpl.txt error(nargchk(1,1, nargin)); if ndim(s) ~= 1 help(mfilename) return end d = data(s); ze = find(d==0); if isempty(ze) % no exact zero found, looking for zero crossings tmp = d(2:end) .* d(1:end-1); ze = find(tmp < 0); if isempty(ze) error('no zero crossing found') else A = getaxis(s, 1); a = abs(d(ze(1))); b = abs(d(ze(1)+1)); if (a+b) > 0 xpos = first(A) + (ze(1)-1 + a/(a+b) )*delta(A); else xpos = first(A) + (ze(1)-1)*delta(A); end u = unit(A); % disp(['first zero/zero crossing at x = ' num2str(xpos) ' ' label(A)]); end else % use first sample that matches zero exactly A = getaxis(s, 1); xpos = first(A) + (ze(1)-1)*delta(A); u = unit(A); end